#ifndef _STACK_H
#define _STACK_H

#ifdef __cplusplus
extern "C" {
#endif

/* include */
#include "list.h"

typedef List Stack;

Stack* stack_create(void (*destroy)(void* ));
void stack_destroy(Stack* stack);
int stack_push(Stack* stack, \
			   void* data);
int stack_pop(Stack* stack, \
			  void** data);

void* stack_peek(const Stack* stack);

int stack_size(const Stack* stack);

#ifdef __cplusplus
}
#endif

#endif